Internet protocol (“IP”) telephony and IP multimedia networks are widely used to setup and manage calls and sessions. To do so, a codec, which refers to a coder-decoder or a compression-decompression device, is generally used to convert an audio signal into a compressed digital form for transmission through the network to reduce file sizes and back into an uncompressed audio signal for play out at a media terminating device. Media terminating devices in IP Telephony (e.g., phones and gateways) support multiple types of codecs.
Codecs range from non-compressed (no loss of information) to compressed (loss of information but good quality under certain conditions). While non-compressed codecs have higher quality, they use more bandwidth compared to non-compressed codecs. In general, it is desirable to create a system that uses non-compressed codecs where bandwidth is cheap and abundant (e.g., within local area networks (LAN)) and use compressed codecs where bandwidth is costly and scarce (e.g., within wide area networks (WAN)).
Since many media terminating devices support multiple codecs, a selection technique is necessary. IP networks are usually configured to give certain codecs preference over others. For example, media terminating devices are set to have starting preferences, and upon connection, the devices use the highest priority codec that both communicating devices can support. However, using default preferences for all types of connections does not always provide a desirable connection. For example, if high compression codecs are set for top priority, then a majority of calls would suffer a loss of information even when it is unnecessary. Further, using default preferences for calls may not allow codec negotiation during a call, such as by taking into consideration network delays, time of day, or other network characteristics.
Thus, it is desirable to provide a codec selection technique that may provide an optimal data compression for each specific connection.